package oas.db;

import java.util.List;

import oas.domain.LeaveType;
import oas.web.PaginationSupport;

/**
 * 请假类型资源类信息
 *
 * @author wjy
 * @version v1.0.0
 */
public interface LeaveTypeRepository {

    /**
     * 查找指定页面大小下某一页的数据
     *
     * @param pageNo
     * @param pageSize
     * @return 一页请假类新
     */
    PaginationSupport<LeaveType> findPage(int pageNo, int pageSize);

    /**
     * 请假类型总数。被删除的请假类型不会计入其中
     *
     * @return 请假类型总数
     */
    long count();

    /**
     * 删除一个请假类型
     *
     * @param id 要删除请假类型的id
     */
    void deleteOne(long id);

    /**
     * 更新一个请假类型
     *
     * @param leaveType 新的请假类型
     */
    void update(LeaveType leaveType);

    /**
     * 添加一个新的请假类型
     *
     * @param leaveType 新的请假类型
     * @return 添加进数据库的请假类型
     */
    LeaveType save(LeaveType leaveType);

    /**
     * 通过id查询请假类型
     *
     * @param id
     * @return 请假类型
     * @author Dzq
     */
    public LeaveType findById(long id);

    /**
     * 查询所有请假类型，用于请假时的下拉框显示
     *
     * @return 请假类型列表
     * @author Dzq
     */
    public List<LeaveType> findAll();


}
